// 工具函数

// 获取元素
function $(selector){
    var dom = document.querySelectorAll(selector);
    // 判断dom的长度
    if (dom.length === 0) {
        return null;
    }
    else if (dom.length === 1){
        return dom[0];
    }
    else {
        return dom;
    }
}

// 获取查询字符串
function getQueryString(key){
    var str = location.search;
    // 1.去掉?号
    str = str.substr(1);

    // 2.分割字符串
    var arr = str.split('&');

    // 3.遍历数组
    for (var i = 0; arr[i]; i++) {
        // 分割字符串
        var arr2 = arr[i].split('=');
        // 判断要获取的key
        if (arr2[0] === key) {
            return arr2[1];
        }
    }
    return '';
}


// 获取dom到body的距离
function offset(dom){
    // 声明两个变量用于累加偏移量和边框宽度
    var oftLeft = 0 - dom.clientLeft;
    var oftTop = 0 - dom.clientTop;

    // 循环累加偏移量和边框宽度

    while(dom){
        oftLeft += dom.offsetLeft + dom.clientLeft;
        oftTop += dom.offsetTop + dom.clientTop;
        //body的offsetParent为null null转布尔值为false 
        //停止循环
        dom = dom.offsetParent;
    }

    // 函数的返回值
    return {left:oftLeft,top:oftTop};
}

// 0-5随机整数
// Math.round(Math.random()*5)

// 5-10随机整数
// Math.round(Math.random()*5)+5
// Math.round(Math.random()*(10-5))+5

// 生成指定区间的随机整数
function randomInt(min,max){
    return Math.round(Math.random()*(max-min))+min;
}
// randomInt(10,20);// 17
// randomInt(50,100);// 57

// 随机生成十六进制颜色值
// '#cccccc'
// '#3c3a34'
// 组成：# + 6位十六进制数
// 十六进制数：0 1 2 3 4 5 6 7 8 9 a b c d e f
function randomColor(){
    var color = '#';
    var str = '0123456789abcdef';
    for (var i = 0; i < 6; i++) {
        var index = randomInt(0,15);// 生成0-15的随机整数
        color += str[index];
    }
    return color;
}
// randomColor();// '#3c3a34'
// randomColor();// '#97a536'

// 匀速运动函数
function animate(dom,attr,target,callback){
    // 判断不同的属性，获取当前值
    if (attr === 'opacity') {
        // 当前值和目标值放大100倍
        var current = getComputedStyle(dom)[attr] * 100;
        target *= 100;
    }
    else if (attr === 'scrollLeft' || attr === 'scrollTop'){
        var current = dom[attr];
    }
    else {
        var current = parseInt(getComputedStyle(dom)[attr]);// '10px' -> 10
    }

    clearInterval(dom.timer);
    dom.timer = setInterval(function (){
        // 计算逐渐变化的速度
        var speed = (target-current)/10;// 48  44  40  36  32 ...

        // 判断speed的正负数，再对speed取整
        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);

        // 当前位置累加速度
        current += speed;

        // 临界值判断（运动停止条件：剩余运动量<=每次的运动量）
        if (Math.abs(target-current) <= Math.abs(speed)) {
            // 清除计时器
            clearInterval(dom.timer);

            // 判断不同的属性，做不同的赋值
            if (attr === 'opacity') {
                dom.style[attr] = target/100;
            }
            else if (attr === 'scrollLeft' || attr === 'scrollTop'){
                dom[attr] = target;
            } 
            else{
                dom.style[attr] = target + 'px';
            }

            console.log( '到达目标位置...' );

            // 到达目标位置之后执行回到函数
            // if (typeof callback === 'function') {
            //     callback();
            // }
            typeof callback === 'function' && callback();
        }
        else {
            // 判断不同的属性，做不同的赋值
            if (attr === 'opacity') {
                dom.style[attr] = current/100;
            }
            else if (attr === 'scrollLeft' || attr === 'scrollTop'){
                dom[attr] = current;
            } 
            else{
                dom.style[attr] = current + 'px';
            }
        }
    },20);
}
